package com.wuuxiang.polestar.admin.utils;

import com.wuuxiang.polestar.admin.dto.BaseReturnDTO;
import com.wuuxiang.utils.string.StrUtils;
import net.sf.oval.ConstraintViolation;
import net.sf.oval.Validator;

import java.util.List;

/**
 * 项目名称：polestar        <br>
 * 类描述：                         <br>
 * 创建人：夏鸿鹏                    <br>
 * 创建时间：2017-11-28 15:17        <br>
 * 修改备注：                        <br>
 */

public class OvalUtils {

    /**
     * ********************************************************<br>
     * 方法说明：校验方法 <br>
     * 参数： @param validatedObject
     * 参数： @return <br>
     * 返回值： String <br>
     * 创建人：夏鸿鹏  <br>
     * 创建时间：2017年7月7日 下午4:53:37 <br>
     * 修改备注： <br>

     *********************************************************
     */
    public static String validate(Object validatedObject) {
        Validator validator = new Validator();
        List<ConstraintViolation> violations = validator.validate(validatedObject);
        if (violations.size() > 0) {
            StringBuilder strAppend = new StringBuilder("");
            for (ConstraintViolation constraintViolation : violations) {
                strAppend.append(constraintViolation.getMessage()).append(";");
            }
            return strAppend.toString();
        }
        return null;
    }

    public static Boolean validate(BaseReturnDTO baseReturnDTO, Object validatedObject) {
        String faileStr = OvalUtils.validate(validatedObject);
        if (StrUtils.isNotBlank(faileStr)) {
            baseReturnDTO.setReturnCode(-1);
            baseReturnDTO.setErrorCode("500");
            baseReturnDTO.setErrorText(faileStr);
            return true;
        }
        return false;
    }

}
